const xing = [
    '张', '李', '王', '赵', '孙', '周', '吴', '郑', '钱', '冯',
    '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤',
    '许', '何', '吕', '施', '孔', '曹', '严', '华', '金', '魏',
    '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章',
    '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '毛', '尹',
    '邓', '邢', '缪', '赫', '池', '俞', '祁', '鲁', '范', '赖',
    '荣', '董', '梁', '谭', '薛', '潘', '赖', '蔡', '廖', '涂',
    '麦', '宗', '贾', '殷', '熊', '彭', '翟', '阎', '乐', '仇',
    '荆', '江', '袁', '雷', '郭', '邵', '朴', '龚', '魏', '冯',
    '余', '高', '汪', '傅', '于', '包', '伍', '曹', '沈', '韩'
];
const ming = [
    '明', '国', '华', '建', '文', '平', '志', '伟', '东', '海', '强', '晓', '生', '光', '林', '小', '民', '永', '杰', '军',
    '波', '成', '荣', '新', '峰', '刚', '家', '龙', '德', '庆', '斌', '辉', '良', '玉', '俊', '立', '浩', '天', '宏', '子',
    '金', '健', '一', '忠', '洪', '江', '福', '祥', '中', '正', '振', '勇', '耀', '春', '大', '宁', '亮', '宇', '兴', '宝',
    '少', '剑', '云', '学', '仁', '涛', '瑞', '飞', '鹏', '安', '亚', '泽', '世', '汉', '达', '卫', '利', '胜', '敏', '群',
    '松', '克', '清', '长', '嘉', '红', '山', '贤', '阳', '乐', '锋', '智', '青', '跃', '元', '南', '武', '广', '思', '雄',
    '锦', '威', '启', '昌', '铭', '维', '义', '宗', '英', '凯', '鸿', '森', '超', '坚', '旭', '政', '传', '康', '继', '翔',
    '远', '力', '进', '泉', '茂', '毅', '富', '博', '霖', '顺', '信', '凡', '豪', '树', '和', '恩', '向', '道', '川', '彬',
    '柏', '磊', '敬', '书', '鸣', '芳', '培', '全', '炳', '基', '冠', '晖', '京', '欣', '廷', '哲', '保', '秋', '君', '劲',
    '栋', '仲', '权', '奇', '礼', '楠', '炜', '友', '年', '震', '鑫', '雷', '兵', '万', '星', '骏', '伦', '绍', '麟', '雨',
    '行', '才', '希', '彦', '兆', '贵', '源', '有', '景', '升', '惠', '臣', '慧', '开', '章', '润', '高', '佳', '虎', '根',
    '诚', '夫', '声', '冬', '奎', '扬', '双', '坤', '镇', '楚', '水', '铁', '喜', '之', '迪', '泰', '方', '同', '滨', '邦',
    '先', '聪', '朝', '善', '非', '恒', '晋', '汝', '丹', '为', '晨', '乃', '秀', '岩', '辰', '洋', '然', '厚', '灿', '卓',
    '轩', '帆', '若', '连', '勋', '祖', '锡', '吉', '崇', '钧', '田', '石', '奕', '发', '洲', '彪', '钢', '运', '伯', '满',
    '庭', '申', '湘', '皓', '承', '梓', '雪', '孟', '其', '潮', '冰', '怀', '鲁', '裕', '翰', '征', '谦', '航', '士', '尧',
    '标', '洁', '城', '寿', '枫', '革', '纯', '风', '化', '逸', '腾', '岳', '银', '鹤', '琳', '显', '焕', '来', '心', '凤',
    '睿', '勤', '延', '凌', '昊', '西', '羽', '百', '捷', '定', '琦', '圣', '佩', '麒', '虹', '如', '靖', '日', '咏', '会',
    '久', '昕', '黎', '桂', '玮', '燕', '可', '越', '彤', '雁', '孝', '宪', '萌', '颖', '艺', '夏', '桐', '月', '瑜', '沛',
    '杨', '钰', '兰', '怡', '灵', '淇', '美', '琪', '亦', '晶', '舒', '菁', '真', '涵', '爽', '雅', '爱', '依', '静', '棋',
    '宜', '男', '蔚', '芝', '菲', '露', '娜', '珊', '雯', '淑', '曼', '萍', '珠', '诗', '璇', '琴', '素', '梅', '玲', '蕾',
    '艳', '紫', '珍', '丽', '仪', '梦', '倩', '伊', '茜', '妍', '碧', '芬', '儿', '岚', '婷', '菊', '妮', '媛', '莲', '娟'
];

// 随机姓名
const name = () => xing[Math.floor(Math.random() * xing.length)] + ming[Math.floor(Math.random() * ming.length)]
// 随机整数
const int = (a, b) => Math.floor(Math.random() * (b - a + 1)) + a
// 随机年龄
const age = () => int(18, 60)
// 随机用户
const user = () => ({
    name: name(),
    age: age(),
})
// 随机用户列表
const users = (length = 100) => {
    let arr = []
    for (let i = 0; i < length; i++) {
        arr.push({
            id: i + 1,
            ...user(),
        })
    }
    return arr
}
// 纳秒
const ns = Math.floor((Date.now() * 1000000) + (performance.now() * 1000 * 1000))
// 微秒 1us=1000ns
const us = Math.floor(ns / 1000)
// 毫秒 1ms=1000us
const ms = Math.floor(us / 1000)
// 秒 1s=1000ms
const s = Math.floor(ms / 1000)
// 生成指定位数的随机整数
const num = (digits) => {
    let min = Math.pow(10, digits - 1);
    let max = Math.pow(10, digits) - 1;
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
// 随机id算法1
const id1 = () => Math.floor(((ns + num(8)) / num(3) + num(8)) / num(3))

// 分页获取用户信息
function getPageUser(
    page = 1,
    size = 8,
    total = 888,
) {
    const startIndex = (page - 1) * size;
    const endIndex = startIndex + size;
    const result = [];
    let id = startIndex + 1;
    for (let i = startIndex; i < endIndex && i < total; i++) {
        result.push({
            id: id++,
            name: name(),
            age: age()
        });
    }
    return {
        total: total,
        data: result
    };
}

// 模拟api接口: 分页获取用户信息
function apiGetPageUser(page = 1, size = 8, total = 888) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            try {
                resolve(getPageUser(page, size, total));
            } catch (error) {
                reject(error);
            }
        }, 1000); // 模拟 1 秒的延迟
    });
}

export default {
    name,
    int,
    age,
    user,
    users,
    getPageUser,
    apiGetPageUser,
    ns,
    us,
    ms,
    s,
    num,
    id1,
}